package cn.edu.zafu.bigdata.x.wgj.j;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.io.IOException;

public class UDPServer {
    public static void main(String[] args) {
        try {
            // 创建UDP套接字，监听指定端口，这里使用9999端口，可按需修改
            DatagramSocket socket = new DatagramSocket(6666);
            System.out.println("UDP服务器已启动，等待客户端请求...");

            byte[] buffer = new byte[1024];
            while (true) {
                // 创建用于接收客户端请求数据的数据包
                DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
                // 接收客户端发送的请求数据包，此方法会阻塞直到收到数据包
                socket.receive(receivePacket);

                // 获取客户端的地址和端口，用于后续回复
                InetAddress clientAddress = receivePacket.getAddress();
                int clientPort = receivePacket.getPort();

                // 获取当前服务器时间，并格式化为字符串
                LocalDateTime now = LocalDateTime.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                String timeString = now.format(formatter);

                // 将时间字符串转换为字节数组，以便发送给客户端
                byte[] sendData = timeString.getBytes();

                // 创建用于向客户端发送时间数据的数据包
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
                // 向客户端发送包含当前时间的数据包
                socket.send(sendPacket);

                System.out.println("已向客户端发送当前时间： " + timeString);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}